一、迁移指引
1、从V6升级到V6.1
更新本次SDK后如有充足时间的话,建议参照1.1 新增的内容和1.3 变动的内容去进行项目的改动。
二、下载地址
1、文档地址
2、SDK下载地址
三、更新内容
1、新增
1.1、新增 XLinkRestKit 网络请求类
本次更新中更换了网络请求库,并重写了部分接口,封装在 XLinkRestKit中。XLinkHttpRequest 将不再进行维护,但是其中的接口还可以继续使用。
- XLinkRestKit配置:
- 如果已启动 XLinkSDK ,即调用了
[[XLinkSDK share] start]
,XLinkRestKit会使用[XLinkSDK share].config
中的http请求服务器地址和企业id等参数。 - 若还没有启动XLinkSDK ,但是需要使用网络请求库,可以调用
[XLinkRestKit setupConfig:config]
,进行http请求服务器地址和企业id等参数的配置。
- 如果已启动 XLinkSDK ,即调用了
- XLinkRestKit扩展
如果XLinkRestKit提供的接口没有覆盖到您需要的api,可以自定义XLinkRequest进行扩展。
XLinkRequest的详细定义如下:
@interface XLinkRequest : NSObject
/** 请求的服务器地址,如果使用`useGeneralServer`的话,这个属性设置的值会被忽略 */
@property (nonatomic, copy, nullable) NSString *apiServer;
/** 请求的具体路径 */
@property (nonatomic, copy, nullable) NSString *api;
/** 请求的参数,如果使用`useGeneralParameters`的话,这个属性设置的值会被忽略 */
@property (nonatomic, strong, nullable) id parameters;
/** 请求的参数,如果使用`useGeneralHeaders`的话,这个属性设置的值会被忽略 */
@property (nonatomic, strong, nullable) NSDictionary<NSString *, NSString *> *headers;
/** 请求方法 */
@property (nonatomic, assign) XLinkHTTPMethodType httpMethod;
/** 请求超时时间 */
@property (nonatomic, assign) NSTimeInterval timeoutInterval;
/** 请求的开始时间 */
@property (assign, nonatomic) NSTimeInterval startTime;
/** 失败后的重试次数 */
@property (nonatomic, assign) NSUInteger retryCount;
/** 请求的唯一标识码 */
@property (copy, nonatomic) NSString *identifier;
/** 使用全局的服务器地址 */
@property (nonatomic, assign) BOOL useGeneralServer;
/** 使用全局的请求头 */
@property (nonatomic, assign) BOOL useGeneralHeaders;
/** 使用全局的参数 */
@property (nonatomic, assign) BOOL useGeneralParameters;
/** 使用SDK内部的access-token */
@property (assign, nonatomic) BOOL userGeneralAccessToken;
/** 请求成功的回调 */
@property (nonatomic, copy, readonly, nullable) XLinkSuccessBlock successBlock;
/** 请求失败的回调 */
@property (nonatomic, copy, readonly, nullable) XLinkFailureBlock failureBlock;
/** 请求完成的回调 */
@property (nonatomic, copy, readonly, nullable) XLinkFinishedBlock finishedBlock;
/** 创建默认的request 将会使用全局的服务器地址、全局的请求头、全局的参数 */
+ (instancetype)defaultRequest;
/** 创建默认的使用全局AccessTokenrequest 将会使用全局的服务器地址、全局的请求头、全局的参数 */
+ (instancetype)defaultAccessTokenRequest;
/** 清除所有的回调 */
- (void)cleanCallbackBlocks;
@end
因此,需要扩展HTTP请求的话,需要新建一个XLinkRequest
对象,并且编辑好api、header、parameters、httpMethod等参数,然后使用以下方法,进行http的请求。
/** 发送请求 @param request 具体的请求 @param finishedBlock 请求完成的回调 @return 请求任务的标识 */
+ (NSString *)sendRequest:(XLinkRequest *)request
onFinished:(nullable XLinkRestCompletionHandler)finishedBlock;
注:
如果使用全局的apiSever,直接设置useGeneralServer这个属性为yes。否则需要设置apiServer这个属性为具体的api服务器地址。
以下使用创建home的接口为例子讲解下是怎样具体扩展HTTP请求的。
接口的地址为:Home管理
//编辑XLinkRequest
XLinkRequest *req = [[XLinkRequest alloc] init];
//使用全局的api服务器地址
req.useGeneralServer = YES;
//使用全局的请求头
req.useGeneralHeaders = YES;
//请求超时时间
req.timeoutInterval = 10;
//请求方法
req.httpMethod = XLinkHTTPMethodTypePost;
//请求api
req.api = @"/v2/home";
//请求参数
req.parameters = @{@"name":@"my_home"};
//发送请求
[XLinkRestKit sendRequest:req onFinished:^(id _Nullable result, NSError * _Nullable err) {
if (err) {
NSLog(@"请求失败");
}else{
NSLog(@"请求成功");
}
}];
2、删除
本次更新暂无删除的内容
3、改动
3.1、XDeviceStateObserver的构造函数更新
以下方法已被废弃
+ (instancetype)deviceStateChangedObserverWithDevice:(XDevice *)device
withDataPointUpdateBlock:(DeviceStateChangedBlock)block;
可以用以下方法替换
+ (instancetype)deviceStateChangedObserverWithDevice:(XDevice *)device
deviceStateChangedBlock:(DeviceStateChangedBlock)block;